#!/usr/bin/env python3
# ========================================================================== #
#                                                                            #
#    KVMD - The main PiKVM daemon.                                           #
#                                                                            #
#    Copyright (C) 2018-2024  Maxim Devaev <mdevaev@gmail.com>               #
#    Copyright (C) 2023-2025  SilentWind <mofeng654321@hotmail.com>          #
#                                                                            #
#    This program is free software: you can redistribute it and/or modify    #
#    it under the terms of the GNU General Public License as published by    #
#    the Free Software Foundation, either version 3 of the License, or       #
#    (at your option) any later version.                                     #
#                                                                            #
#    This program is distributed in the hope that it will be useful,         #
#    but WITHOUT ANY WARRANTY; without even the implied warranty of          #
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           #
#    GNU General Public License for more details.                            #
#                                                                            #
#    You should have received a copy of the GNU General Public License       #
#    along with this program.  If not, see <https://www.gnu.org/licenses/>.  #
#                                                                            #
# ========================================================================== #

from setuptools import setup, find_packages

def main() -> None:
    # Define entry points manually with specific import paths
    entry_points = {
        "console_scripts": [
            "kvmd = kvmd.apps.kvmd:main",
            "kvmd-media = kvmd.apps.media:main",
            "kvmd-pst = kvmd.apps.pst:main",
            "kvmd-pstrun = kvmd.apps.pstrun:main",
            "kvmd-otg = kvmd.apps.otg:main",
            "kvmd-otgnet = kvmd.apps.otgnet:main",
            "kvmd-otgmsd = kvmd.apps.otgmsd:main",
            "kvmd-otgconf = kvmd.apps.otgconf:main",
            "kvmd-htpasswd = kvmd.apps.htpasswd:main",
            "kvmd-totp = kvmd.apps.totp:main",
            "kvmd-edidconf = kvmd.apps.edidconf:main",
            "kvmd-ipmi = kvmd.apps.ipmi:main",
            "kvmd-vnc = kvmd.apps.vnc:main",
            "kvmd-nginx-mkconf = kvmd.apps.ngxmkconf:main",
            "kvmd-janus = kvmd.apps.janus:main",
            "kvmd-watchdog = kvmd.apps.watchdog:main",
            "kvmd-oled = kvmd.apps.oled:main",
            "kvmd-helper-pst-remount = kvmd.helpers.remount:main",
            "kvmd-helper-otgmsd-remount = kvmd.helpers.remount:main",
            "kvmd-helper-swapfiles = kvmd.helpers.swapfiles:main",
        ]
    }

    setup(
        name="kvmd",
        version="4.20",
        url="https://github.com/pikvm/kvmd",
        license="GPLv3",
        author="Maxim Devaev",
        author_email="mdevaev@gmail.com",
        description="The main PiKVM daemon",
        platforms="any",

        packages=[
            "kvmd",
            "kvmd.validators",
            "kvmd.yamlconf",
            "kvmd.keyboard",
            "kvmd.plugins",
            "kvmd.plugins.auth",
            "kvmd.plugins.hid",
            "kvmd.plugins.hid._mcu",
            "kvmd.plugins.hid.otg",
            "kvmd.plugins.hid.bt",
            "kvmd.plugins.hid.ch9329",
            "kvmd.plugins.atx",
            "kvmd.plugins.msd",
            "kvmd.plugins.msd.otg",
            "kvmd.plugins.ugpio",
            "kvmd.clients",
            "kvmd.apps",
            "kvmd.apps.kvmd",
            "kvmd.apps.kvmd.switch",
            "kvmd.apps.kvmd.info",
            "kvmd.apps.kvmd.api",
            "kvmd.apps.media",
            "kvmd.apps.pst",
            "kvmd.apps.pstrun",
            "kvmd.apps.otg",
            "kvmd.apps.otg.hid",
            "kvmd.apps.otgnet",
            "kvmd.apps.otgmsd",
            "kvmd.apps.otgconf",
            "kvmd.apps.swctl",
            "kvmd.apps.htpasswd",
            "kvmd.apps.totp",
            "kvmd.apps.edidconf",
            "kvmd.apps.ipmi",
            "kvmd.apps.vnc",
            "kvmd.apps.vnc.rfb",
            "kvmd.apps.ngxmkconf",
            "kvmd.apps.janus",
            "kvmd.apps.watchdog",
            "kvmd.apps.oled",
            "kvmd.helpers",
            "kvmd.helpers.remount",
            "kvmd.helpers.swapfiles",
        ],

        package_data={
            "kvmd.apps.vnc": ["fonts/*.ttf"],
            "kvmd.apps.oled": ["fonts/*.ttf", "pics/*.ppm"],
            "kvmd": ["i18n/zh/LC_MESSAGES/*.mo"],
        },

        entry_points=entry_points,

        classifiers=[
            "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
            "Development Status :: 5 - Production/Stable",
            "Programming Language :: Python :: 3.13",
            "Topic :: System :: Systems Administration",
            "Operating System :: POSIX :: Linux",
            "Intended Audience :: System Administrators",
            "Intended Audience :: End Users/Desktop",
            "Intended Audience :: Telecommunications Industry",
        ],
    )


if __name__ == "__main__":
    main()
